// pages/video/video.js
import request from '../../utils/request.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    videoGroupList: [],//导航标签数据
    navId: '',//导航标识
    videoList: [],//视频数据
    videoId: '',//视频id标识
    videoUpdateTime: [], //视频播放时常
    isTriggered:false,//下拉刷新是否杯触发
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //导航获取数据方法
    this.getVideoGroupListData()
    //获取视频列表数据
    this.getVideoList(this.data.navId)
  },
  //获取导航数据
  async getVideoGroupListData() {
    let videoGroupListData = await request('/video/group/list')
    this.setData({
      videoGroupList: videoGroupListData.data.slice(0, 14),
      navId: videoGroupListData.data[0].id
    })
    //获取视频列表数据
    this.getVideoList(this.data.navId)
  },

  //点击切换导航回调
  changeNav(event) {
    let navId = Number(event.currentTarget.id)
    this.setData({
      navId,
      videoList: []
    })
    //添加加载模块,正在加载
    wx.showLoading({
      title: '正在加载'
    })
    //动态获取当前导航的视频数据
    this.getVideoList(this.data.navId)
  },
  //获取视频列表数据
  async getVideoList(navId) {
    if (!navId) {
      //如果为空
      return
    }
    let videoListData = await request('/video/group', { id: navId })
    //关闭消息提示框
    wx.hideLoading()
    let index = 0
    let videoList = videoListData.datas.map(item => {
      item.id = index++
      return item
    })
    this.setData({
      videoList,
      isTriggered:false// 关闭下拉刷新提示框
    })
  },
  // 点击播放的回调/继续播放的回调
  handlePlay(event) {
    let vid = event.currentTarget.id
    //停掉上一个播放视频
    this.vid !== vid && this.videoContext && this.videoContext.stop()
    this.vid = vid
    //更新data的video的状态数据
    this.setData({
      videoId: vid
    })
    //创建控制viedo标签的实例对象
    this.videoContext = wx.createVideoContext(vid)
    //自动播放
    // 判断当前视频是否偶播放记录,如果有就跳转到自定播放位置
    let { videoUpdateTime } = this.data
    let videoItem = videoUpdateTime.find(item => item.vid === vid)
    //如果有
    if (videoItem) {
      //直接跳转到指定
      this.videoContext.seek(videoItem.currentTime)
    }
    this.videoContext.play()
  },
  //监听视频播放进度的回调
  handleTimeUpdate(event) {
    let videoTimeObj = { vid: event.currentTarget.id, currentTime: event.detail.currentTime }
    //如果数组中有之前的对象
    let { videoUpdateTime } = this.data
    //判断是否存在
    let videoItem = videoUpdateTime.find(item => item.vid === videoTimeObj.vid)
    //如果存在
    if (videoItem) {
      videoItem.currentTime = event.detail.currentTime
    } else {
      videoUpdateTime.push(videoTimeObj)
    }
    //更新
    this.setData({
      videoUpdateTime
    })
  },
  //视频播放结束调用
  bandleEnded(event){
    let { videoUpdateTime } = this.data
    //移出数组对应下标
    videoUpdateTime.splice(videoUpdateTime.findIndex(item=>item.vid===event.currentTarget.id),1)
     //更新
     this.setData({
      videoUpdateTime
    })
  },
  //自定义下拉刷新回调 scroll-view
  handleRefresher(){
    // console.log(123131);
    this.getVideoList(this.data.navId)
  },
  //自定义上拉触底的回调 scroll-view
  handleToLower(){
    console.log(1241241);
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
      console.log('下拉刷新');
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})